<template>
  <div class="wrap-container trigle">
    <div class="back_img3"></div>
    <div class="back_img"></div>
    <div class="back_img1"></div>
    <div class="back_img2"></div>
    <ul :class="{first: index == 0, second: index == 1, third: index == 2, four: index == 3}"
      v-for="(item, index) in arrData" :key="index">
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
    </ul>


    <div class="detail" :class="`detail_${index + 1}`" v-for="(item, index) in arrData" :key="index">
      <div class="detail_txt" :class="`detail_txt${index + 1}`">
        <span class="precent_txt" :class="`precent_txt${index + 1}`">
          <div class="chartsdom" :id="`chart_${index + 1}`"></div>
        </span>
        <div class="txt_right" :class="`txt_right${index + 1}`">
          <span>
            <div class="f_div" :class="{aharrow_up: index == 0 || index == 1, aharrow_down: index == 2 || index == 3}">
              {{ item.post }}</div>
            <div class="s_div" :class="`s_div${index + 1}`">{{ item.number }}人</div>
          </span>
        </div>
      </div>
      <div class="arrow_contain" :class="`arrow_contain${index + 1}`">
        <span class="arrow" :class="`arrow_${index + 1}`"></span>
      </div>
    </div>
  </div>



</template>

<script>
  import { getPositionPerson } from '@/api/home'
  import { nextTick } from 'vue'
  export default {
    name: "pyramidEchart",
    data() {
      return {
        option: null,
        arrData: [
            {
            post: '总监',
            number: 66
          }, {
            post: '前端',
            number: 826
          }, {
            post: '后端',
            number: 572
          }, {
            post: '文档',
            number: 158
          }
        ],
        color: ['#45fed4', '#84a9ef', '#f1e04f', '#dbfe73'],
        totalNum: [],
        sum: 0

      }
    },
    
    async mounted() {
      // let res = await this.getData();

        this.arrData.forEach((v, i) => {
          this.totalNum.push(v.number);
        })
        this.sum = this.totalNum.reduce((prev, next, index, array) => prev + next)
        this.arrData.sort((a, b) => b.number - a.number)
        this.arrData.map((v, i) => {
          v.color = this.color[i];
          this.getEchart(`chart_${i + 1}`, v);
        })
    },
    methods: {
      getEchart(dom, data) {
        let sum = (Math.round((data.number / this.sum) * 10000) / 100).toFixed(1);
        let myChart = this.$echarts.init(document.getElementById(dom));
        this.option = {
          color: [data.color, '#333'],
          series: [
            {
              name: '访问来源',
              type: 'pie',
              radius: ['92%', '100%'],
              clockWise: false,
              avoidLabelOverlap: false,
              hoverAnimation: false,
              label: {
                normal: {
                  show: true,
                  position: 'center',
                  textStyle: {
                    fontSize: 14
                  },
                  formatter: '{c}%'
                }
              },
              labelLine: {
                show: false
              },
              data: [
                {
                  value: sum,
                  name: '',
                  label: {
                    normal: {
                      show: true
                    }
                  }
                },
                {
                  value: (100 - sum),
                  name: '',
                  label: {
                    normal: {
                      show: false
                    }
                  }
                }
              ]
            }
          ]
        };
        myChart.setOption(this.option, true);

        window.addEventListener('resize', () => {
          myChart.resize();
        });
      },

      async getData() {
        let res =  await getPositionPerson();
          if (res.data.code === 200) {
            let allData = this.formatData(res.data.rows);
            this.arrData = allData.sort((a, b) => b.personNumber - a.personNumber).slice(0, 4);
            this.arrData.forEach( (i)=>{
              this.sum += i.number;
            } )
            this.arrData.map((item)=>{
              let temp = item.number/this.sum;
              item.bili = (Math.round(temp*10000))/100+'%';
            })
          }
        // })
        return this.arrData;
        
      },
      // 格式化 res
      formatData(data) {
        let result = [];
        for (let item of data) {
          let arrObj = {};
          arrObj.post = item.positionName;
          arrObj.number = item.personNumber;
          result.push(arrObj);
        }
        return result;
      },

    }
  }
</script>

<style lang="scss" scoped>
  .trigle {
    left: 30%;
    /* top: -5%;  */
    width: 39%;
    height: 100%;

    .back_img {
      position: absolute;
      top: 195px;
      width: 100%;
      height: 300px;
      background: url(../../assets/img/chart2/icon_db02.png) no-repeat center;
      transform: rotateX(0deg);
      background-size: 80% 84%;
    }

    .back_img1 {
      position: absolute;
      left: 0;
      top: 34%;
      width: 100%;
      height: 100%;
      background: url(../../assets/img/chart2/icon_db03.png) no-repeat center;
      transform: rotateX(65deg);
      background-size: 62%;
      animation: trigle_move 10s linear infinite;
      -webkit-animation: trigle_move 10s linear infinite;
    }

    .back_img2 {
      position: absolute;
      top: 45%;
      width: 100%;
      height: 300px;
      background: url(../../assets/img/chart2/icon_db04.png) no-repeat center;
      transform: rotateX(66deg);
      background-size: 39%;
      animation: trigle_move1 10s linear infinite;
      -webkit-animation: trigle_move1 10s linear infinite;
    }

    .back_img3 {
      position: absolute;
      top: 247px;
      width: 100%;
      height: 300px;
      /* background: url(../../assets/img/chart2/icon_db01.png) no-repeat center; */
      transform: rotateX(50deg);
      background-size: 65% 100%;
    }

    .first {
      list-style-type: none;
      left: 220px;
      top: 100px;
      width: 240px;
      height: 240px;
      position: absolute;
      transform-style: preserve-3d;
      transform: rotateX(70deg) rotateZ(45deg);
      perspective: 2000px;
      perspective-origin: 50% 100%;
      animation: trigle_down1 1s linear;
      -webkit-animation: trigle_down1 1s linear;

      li {
        width: 100%;
        height: 100%;
        line-height: 200px;
        position: absolute;
        background-image: linear-gradient(#45fed4 1%, rgba(0, 96, 220, 1));
        opacity: 0.8;

        &:nth-child(1) {
          transform: rotateX(0deg) translateZ(-35px) scale(0.79);
        }

        &:nth-child(2) {
          transform: translateZ(-100px) translateY(170px) rotateX(-70deg);
          height: 70px;
          line-height: 70px;
          transform-origin: 0 100%;
          clip-path: polygon(25px 0%, calc(100% - 25px) 0%, 100% 100%, 0% 100%);
        }

        &:nth-child(3) {
          transform: rotateX(-180deg) translateZ(100px);
        }

        &:nth-child(4) {
          height: 70px;
          line-height: 70px;
          transform-origin: 0 100%;
          transform: translateZ(-100px) translateY(-70px) rotateX(-110deg);
          clip-path: polygon(25px 0%, calc(100% - 25px) 0%, 100% 100%, 0% 100%);
        }

        &:nth-child(5) {
          width: 70px;
          transform-origin: 100% 100%;
          transform: translateZ(-100px) translateX(-70px) rotateY(110deg);
          clip-path: polygon(0% 25px, 100% 0%, 100% 100%, 0% calc(100% - 25px));
        }

        &:nth-child(6) {
          width: 70px;
          transform-origin: 100% 100%;
          transform: translateZ(-100px) translateX(170px) rotateY(70deg);
          clip-path: polygon(0% 25px, 100% 0%, 100% 100%, 0% calc(100% - 25px));
          background-image: linear-gradient(to left, rgba(0, 96, 220, 1), #45fed4);
        }
      }
    }

    .second {
      list-style-type: none;
      left: 241px;
      top: 65px;
      width: 200px;
      height: 195px;
      text-align: center;
      position: absolute;
      transform-style: preserve-3d;
      transform: rotateX(70deg) rotateZ(45deg);
      perspective: 2000px;
      perspective-origin: 50% 100%;
      animation: trigle_down2 2s linear;
      -webkit-animation: trigle_down2 2s linear;

      li {
        width: 100%;
        height: 100%;
        position: absolute;
        background-image: linear-gradient(rgba(58, 200, 255, 0.8) 25%, #616cff);
        opacity: 0.8;

        &:nth-child(1) {
          transform: rotateX(0deg) translateZ(-48px) scale(0.8);
        }

        &:nth-child(2) {
          transform: translateZ(-100px) translateY(140px) rotateX(-70deg);
          height: 55px;
          line-height: 55px;
          transform-origin: 0 100%;
          clip-path: polygon(18px 0%, calc(100% - 18px) 0%, 100% 100%, 0% 100%);
        }

        &:nth-child(3) {
          transform: rotateX(-180deg) translateZ(100px);
        }

        &:nth-child(4) {
          height: 55px;
          line-height: 55px;
          transform-origin: 0 100%;
          transform: translateZ(-100px) translateY(-55px) rotateX(-110deg);
          clip-path: polygon(18px 0%, calc(100% - 18px) 0%, 100% 100%, 0% 100%);
        }

        &:nth-child(5) {
          width: 55px;
          transform-origin: 100% 100%;
          transform: translateZ(-100px) translateX(-55px) rotateY(110deg);
          clip-path: polygon(0% 18px, 100% 0%, 100% 100%, 0% calc(100% - 18px));
        }

        &:nth-child(6) {
          width: 55px;
          transform-origin: 100% 100%;
          transform: translateZ(-100px) translateX(145px) rotateY(70deg);
          clip-path: polygon(0% 18px, 100% 0%, 100% 100%, 0% calc(100% - 18px));
        }
      }
    }

    .third {
      list-style-type: none;
      left: 272px;
      top: 20px;
      width: 140px;
      height: 140px;
      text-align: center;
      position: absolute;
      transform-style: preserve-3d;
      transform: rotateX(70deg) rotateZ(45deg);
      perspective: 2000px;
      perspective-origin: 50% 100%;
      animation: trigle_down3 3s linear;
      -webkit-animation: trigle_down3 3s linear;

      li {
        width: 100%;
        height: 100%;
        position: absolute;
        background-image: linear-gradient(#f1e04f 5%, rgba(253, 156, 48, 0.8));
        opacity: 0.7;

        &:nth-child(1) {
          transform: rotateX(0deg) translateZ(-48px) scale(0.75);
        }

        &:nth-child(2) {
          transform: translateZ(-100px) translateY(85px) rotateX(-70deg);
          height: 55px;
          line-height: 55px;
          transform-origin: 0 100%;
          clip-path: polygon(18px 0%, calc(100% - 18px) 0%, 100% 100%, 0% 100%);
        }

        &:nth-child(3) {
          transform: rotateX(-180deg) translateZ(100px);
        }

        &:nth-child(4) {
          height: 55px;
          line-height: 55px;
          transform-origin: 0 100%;
          transform: translateZ(-100px) translateY(-55px) rotateX(-110deg);
          clip-path: polygon(18px 0%, calc(100% - 18px) 0%, 100% 100%, 0% 100%);
        }

        &:nth-child(5) {
          width: 55px;
          transform-origin: 100% 100%;
          transform: translateZ(-100px) translateX(-55px) rotateY(110deg);
          clip-path: polygon(0% 18px, 100% 0%, 100% 100%, 0% calc(100% - 18px));
        }

        &:nth-child(6) {
          width: 55px;
          transform-origin: 100% 100%;
          transform: translateZ(-100px) translateX(85px) rotateY(70deg);
          clip-path: polygon(0% 18px, 100% 0%, 100% 100%, 0% calc(100% - 18px));
        }
      }
    }

    .four {
      list-style-type: none;
      left: 290px;
      top: -8px;
      width: 105px;
      height: 106px;
      text-align: center;
      position: absolute;
      transform-style: preserve-3d;
      transform: rotateX(70deg) rotateZ(45deg);
      perspective: 2000px;
      perspective-origin: 50% 100%;
      animation: trigle_down4 4s linear;
      -webkit-animation: trigle_down4 4s linear;

      li {
        width: 100%;
        height: 100%;
        position: absolute;
        background-image: linear-gradient(rgba(112, 245, 100, 0.8) 9%, #dbfe73);
        opacity: 0.7;

        &:nth-child(1) {
          display: none;
          transform: rotateX(0deg) translateZ(-48px) scale(0.75);
        }

        &:nth-child(2) {
          transform: translateZ(-100px) translateY(-48px) rotateX(-70deg);
          height: 152px;
          transform-origin: 0 100%;
          clip-path: polygon(50% 0%, 50% 0%, 100% 100%, 0% 100%);
        }

        &:nth-child(3) {
          transform: rotateX(-180deg) translateZ(100px);
        }

        &:nth-child(4) {
          height: 150px;
          transform-origin: 0 100%;
          transform: translateZ(-100px) translateY(-150px) rotateX(-110deg);
          clip-path: polygon(50% 0%, 50% 0%, 100% 100%, 0% 100%);
        }

        &:nth-child(5) {
          width: 150px;
          transform-origin: 100% 100%;
          transform: translateZ(-100px) translateX(-150px) rotateY(110deg);
          clip-path: polygon(0% 50%, 100% 0%, 100% 100%, 0% 50%);
        }

        &:nth-child(6) {
          width: 152px;
          transform-origin: 100% 100%;
          transform: translateZ(-100px) translateX(-48px) rotateY(70deg);
          clip-path: polygon(0% 50%, 100% 0%, 100% 100%, 0% 50%);
        }
      }
    }

    .detail {
      width: 240px;
      height: 60px;
      position: absolute;

      &.detail_1 {
        left: 12px;
        top: 245px;
        width: 200px;
      }

      &.detail_2 {
        left: 430px;
        top: 194px;
        width: 200px;
      }

      &.detail_3 {
        left: 67px;
        top: 117px;
        width: 200px;
      }

      &.detail_4 {
        left: 379px;
        top: 60px;
        width: 200px;
      }

      .detail_txt {
        display: inline-block;
        width: calc(100% - 80px);
        height: 100%;

        .txt_right {
          padding: 10px 0;
          display: inline-block;
          float: right;
          height: 60px;
          width: calc(100% - 65px);

          %arrow_icon {
            content: '';
            width: 12px;
            height: 18px;
            display: block;
            float: right;
          }

          .f_div {
            color: #84a9ef;
            font-size: 16px;

            &.aharrow_down {
              &:before {
                @extend %arrow_icon;
                background: url(../../assets/img/chart2/icon_jt01.png) no-repeat center;
              }
            }

            &.aharrow_up {
              &:before {
                @extend %arrow_icon;
                background: url(../../assets/img/chart2/icon_jt02.png) no-repeat center;
              }
            }
          }

          .s_div {
            font-size: 16px;
            font-weight: bold;
          }

          .s_div1 {
            color: #01ddb2;
          }

          .s_div2 {
            color: #5d83ff;
          }

          .s_div3 {
            color: #e59138;
          }

          .s_div4 {
            color: #77f364;
          }
        }

        &.detail_txt1 {
          animation: opacity_path 3s linear;
          -webkit-animation: opacity_path 3s linear;
        }

        &.detail_txt2 {
          animation: opacity_path2 4s linear;
          -webkit-animation: opacity_path2 4s linear;
          float: right;
        }

        &.detail_txt3 {
          animation: opacity_path3 5s linear;
          -webkit-animation: opacity_path3 5s linear;
        }

        &.detail_txt4 {
          animation: opacity_path4 6s linear;
          -webkit-animation: opacity_path4 6s linear;
          float: right;
        }

        .precent_txt {
          width: 50px;
          height: 50px;
          display: inline-block;
          border-radius: 50%;
          margin: 5px;

          &.precent_txt1 {
            background: url(../../assets/img/chart2/icon_xfq04.png) no-repeat center;
          }

          &.precent_txt2 {
            background: url(../../assets/img/chart2/icon_xfq03.png) no-repeat center;
          }

          &.precent_txt3 {
            background: url(../../assets/img/chart2/icon_xfq01.png) no-repeat center;
          }

          &.precent_txt4 {
            background: url(../../assets/img/chart2/icon_xfq02.png) no-repeat center;
          }
        }
      }
    }

    .chartsdom {
      width: 100%;
      height: 100%;
    }

    .arrow_contain {
      width: 80px;
      height: 100%;
      display: inline-block;

      &.arrow_contain1 {
        animation: clip_line 2s linear;
        -webkit-animation: clip_line 2s linear;
        float: right;
      }

      &.arrow_contain2 {
        animation: clip_line2 3s linear;
        -webkit-animation: clip_line2 3s linear;
        float: left;
      }

      &.arrow_contain3 {
        animation: clip_line3 4s linear;
        -webkit-animation: clip_line3 4s linear;
        float: right;
      }

      &.arrow_contain4 {
        animation: clip_line4 5s linear;
        -webkit-animation: clip_line4 5s linear;
        float: left;
      }

      .arrow {
        &.arrow_1 {
          width: 20px;
          height: 1px;
          background: #01ddb2;
          transform: rotate(30deg);
          display: inline-block;
          margin-top: 40px;

          &:before {
            content: '';
            width: 50px;
            height: 1px;
            background: #01ddb2;
            display: inline-block;
            transform: rotate(-30deg);
            position: absolute;
            left: 17px;
            top: -13px;
          }

          &:after {
            content: '';
            width: 5px;
            height: 5px;
            background: #01ddb2;
            display: inline-block;
            border-radius: 50%;
            position: absolute;
            top: -2px;
            box-shadow: 0px 0px 5px 1px #01ddb2;
            left: -2px;
          }
        }

        &.arrow_2 {
          width: 20px;
          height: 1px;
          background: #84a9ef;
          transform: rotate(-30deg);
          display: inline-block;
          margin-top: 40px;
          float: right;

          &:before {
            content: '';
            width: 50px;
            height: 1px;
            background: #84a9ef;
            display: inline-block;
            transform: rotate(30deg);
            position: absolute;
            left: -47px;
            top: -13px;
          }

          &:after {
            content: '';
            width: 5px;
            height: 5px;
            background: #84a9ef;
            display: inline-block;
            border-radius: 50%;
            position: absolute;
            top: -2px;
            box-shadow: 0px 0px 5px 1px #84a9ef;
            left: 17px;
          }
        }

        &.arrow_3 {
          width: 20px;
          height: 1px;
          background: #ff9232;
          transform: rotate(30deg);
          display: inline-block;
          margin-top: 40px;

          &:before {
            content: '';
            width: 50px;
            height: 1px;
            background: #ff9232;
            display: inline-block;
            transform: rotate(-30deg);
            position: absolute;
            left: 17px;
            top: -13px;
          }

          &:after {
            content: '';
            width: 5px;
            height: 5px;
            background: #ff9232;
            display: inline-block;
            border-radius: 50%;
            position: absolute;
            top: -2px;
            box-shadow: 0px 0px 5px 1px #ff9232;
            left: -2px;
          }
        }

        &.arrow_4 {
          width: 20px;
          height: 1px;
          background: #77f364;
          transform: rotate(-30deg);
          display: inline-block;
          margin-top: 40px;
          float: right;

          &:before {
            content: '';
            width: 50px;
            height: 1px;
            background: #77f364;
            display: inline-block;
            transform: rotate(30deg);
            position: absolute;
            left: -47px;
            top: -13px;
          }

          &:after {
            content: '';
            width: 5px;
            height: 5px;
            background: #77f364;
            display: inline-block;
            border-radius: 50%;
            position: absolute;
            top: -2px;
            box-shadow: 0px 0px 5px 1px #77f364;
            left: 17px;
          }
        }

      }
    }


  }


  @keyframes clip_line {
    0% {
      clip-path: polygon(100% 0, 100% 0%, 100% 0, 100% 0);
    }

    50% {
      clip-path: polygon(100% 0, 100% 0%, 100% 0, 100% 0);
    }

    75% {
      clip-path: polygon(50% 0, 100% 0%, 100% 100%, 50% 100%);
    }

    100% {
      clip-path: polygon(0% 0, 100% 0%, 100% 100%, 0% 100%);
    }
  }

  @keyframes clip_line2 {
    0% {
      clip-path: polygon(0% 0, 0% 0%, 0% 0, 0% 0);
    }

    66.66% {
      clip-path: polygon(0% 0, 0% 0%, 0% 0, 0% 0);
    }

    83% {
      clip-path: polygon(0% 0, 50% 0%, 50% 50%, 0% 50%);
    }

    100% {
      clip-path: polygon(0% 0, 100% 0%, 100% 100%, 0% 100%);
    }
  }

  @keyframes clip_line3 {
    0% {
      clip-path: polygon(100% 0, 100% 0%, 100% 0, 100% 0);
    }

    75% {
      clip-path: polygon(100% 0, 100% 0%, 100% 0, 100% 0);
    }

    93% {
      clip-path: polygon(50% 0, 100% 0%, 100% 100%, 50% 100%);
    }

    100% {
      clip-path: polygon(0% 0, 100% 0%, 100% 100%, 0% 100%);
    }
  }

  @keyframes clip_line4 {
    0% {
      clip-path: polygon(0% 0, 0% 0%, 0% 0, 0% 0);
    }

    70% {
      clip-path: polygon(0% 0, 0% 0%, 0% 0, 0% 0);
    }

    85% {
      clip-path: polygon(0% 0, 50% 0%, 50% 50%, 0% 50%);
    }

    100% {
      clip-path: polygon(0% 0, 100% 0%, 100% 100%, 0% 100%);
    }
  }

  @keyframes opacity_path {
    0% {
      opacity: 0;
    }

    66.7% {
      opacity: 0;
    }

    100% {
      opacity: 1;
    }
  }

  @keyframes opacity_path2 {
    0% {
      opacity: 0;
    }

    75% {
      opacity: 0;
    }

    100% {
      opacity: 1;
    }
  }

  @keyframes opacity_path3 {
    0% {
      opacity: 0;
    }

    80% {
      opacity: 0;
    }

    100% {
      opacity: 1;
    }
  }

  @keyframes opacity_path4 {
    0% {
      opacity: 0;
    }

    83.33% {
      opacity: 0;
    }

    100% {
      opacity: 1;
    }
  }

  @keyframes trigle_down1 {
    0% {
      top: -250px;
    }

    100% {
      top: 80px;
    }
  }

  @keyframes trigle_down2 {
    0% {
      top: -300px;
    }

    50% {
      top: -300px;
    }

    100% {
      top: 45px
    }
  }

  @keyframes trigle_down3 {
    0% {
      top: -250px;
    }

    66.66% {
      top: -250px;
    }

    100% {
      top: 0;
    }
  }

  @keyframes trigle_down4 {
    0% {
      top: -250px;
    }

    75% {
      top: -250px;
    }

    100% {
      top: -28px;
    }
  }

  @keyframes trigle_move {
    0% {
      transform: rotateX(65deg) rotateZ(360deg);
    }

    100% {
      transform: rotateX(65deg) rotateZ(0deg);
    }
  }

  @keyframes trigle_move1 {
    0% {
      transform: rotateX(66deg) rotateZ(0deg);
    }

    100% {
      transform: rotateX(66deg) rotateZ(360deg);
    }
  }
</style>